import i18n from '@/i18n'
import { MessageBox } from 'element-ui'

export const showErrorCodeMsg = (code) => {
  const msg = i18n.t('common.error.codeMsg.' + code)
  alert(msg)
}

/**
 * 将const中的数据转化为下拉框选择时可用的数组
 * @param {Object} obj  const中的数据
 * @param {Object|null} firstItem 下拉框第一项，如：{value: '', label: '请选择xxx'}
 * @param {String} type key的数据类型
 * @return {Array} 转换后的数据
 */
export const constDataToArray = (obj, firstItem = null, type = 'string') => {
  const arr = []
  if (type === 'string') {
    Object.keys(obj).forEach((k) => {
      if (k !== 'default') {
        arr.push({ value: Number[k], label: obj[k] })
      }
    })
  } else if (type === 'number') {
    Object.keys(obj).forEach((k) => {
      if (k !== 'default') {
        arr.push({ value: k, label: obj[k] })
      }
    })
  } else if (type === 'boolean') {
    Object.keys(obj).forEach((k) => {
      if (k !== 'default') {
        arr.push({ value: k === 'true', label: obj[k] })
      }
    })
  }
  if (firstItem) {
    arr.unshift(firstItem)
  }
  return arr
}

//  获取时间原子信息
export const getTimeAtom = (t) => {
  if (!t) {
    return null
  }
  const dt = new Date(t)
  const year = dt.getFullYear()
  const month = doubleDigit((dt.getMonth() + 1))
  const date = doubleDigit(dt.getDate())
  const hours = doubleDigit(dt.getHours())
  const minutes = doubleDigit(dt.getMinutes())
  const seconds = doubleDigit(dt.getSeconds())
  return { year, month, date, hours, minutes, seconds }
}
// 转换为2位数
const doubleDigit = (n) => {
  return n.toString().padStart(2, '0')
}

/** *************** 时间相关 *************** **/
// export const formatMonth = t => {
//   if (!t) return ''
//   const { year, month, date, hours, minutes, seconds } = getTimeAtom(t)
//   return `${year}-${month}`
// }
// export const formatDate = t => {
//   return t ? moment(t).format('YYYY-MM-DD') : ''
// }
// export const formatMinute = t => {
//   return t ? moment(t).format('YYYY-MM-DD HH:mm') : ''
// }
// export const formatSecond = t => {
//   return t ? moment(t).format('YYYY-MM-DD HH:mm:ss') : ''
// }

export const confirmExecHandle = (title, text, callback, cancelCallBack = null) => MessageBox.confirm(text, title, {
  type: 'warning',
  beforeClose: async (action, instance, done) => {
    if (action === 'confirm') {
      instance.confirmButtonLoading = true
      instance.confirmButtonText = i18n.t('common.confirmLoadingText')
      instance.showClose = false
      instance.closeOnClickModal = false
      instance.closeOnPressEscape = false
      instance.showCancelButton = false

      await callback()
      done()
      setTimeout(() => {
        instance.confirmButtonLoading = false
      }, 300)
    } else {
      done()
      cancelCallBack && cancelCallBack()
    }
  },
}).then(() => { // 在 beforeClose 中已经对then和catch后的事件做了处理，then可省略； 省略catch时，点击取消会提示错误
}).catch(() => {
})
// confirmExecHandle 使用示例：
// confirmExecHandle('提示', '此操作将删除xxx，是否继续？', () => {
//   return new Promise((resolve, reject) => {
//     setTimeout(Math.random() > 0.5 ? resolve : reject, 1000)
//   }).catch(_ => console.log('Oops errors!'))
// })
